iT邦幫忙

2025 iThome 鐵人賽

DAY 24
0
Modern Web

【網頁是什麼,能吃嗎】── 零基礎也能學會網頁製作系列 第 24

【Day 24】專案資料庫的規劃 ── Vue.js 實作篇

  • 分享至 

  • xImage
  •  

今日呢,筆者想先將專案資料庫的命名與結構先想清楚,也就是Database, Collection 要怎麼取名、各自放什麼。因為我這個小專案會存 { username, password },把這些規劃好,之後串接就會順很多。那就開始吧!


我會怎麼命名(先從 dev 環境開始)

命名沒有硬性規範,但官方社群也提到 沒有特定制式;維持團隊一致即可。以下是我喜歡、清楚好讀的風格。

  • Databaseterrible_login_dev(之後可再開 terrible_login_prod
  • Collectionaccounts(用複數小寫,直覺表示「很多帳號」)

accounts 文件的欄位(v1)

{
  "_id": ObjectId("..."),
  "username": "alice",
  "password": "banana",
  "createdAt": ISODate("2025-10-08T12:34:56Z"),
  "updatedAt": ISODate("2025-10-08T12:34:56Z")
}

Date 欄位使用 Mongo 的 BSON Date(UTC、毫秒精度),用 ISODate(...)/new Date() 建就好。([MongoDB][https://www.mongodb.com/docs/manual/reference/bson-types])


一致性與約束(Unique Index)

因為筆者打算讓 usernamepassword 都是獨一無二的,因此在 MongoDB 裡使用 Unique Index 來保證這件事:

  • db.accounts.createIndex({ username: 1 }, { unique: true })
  • db.accounts.createIndex({ password: 1 }, { unique: true })

圖解(ASCII 版本)

terrible_login_dev (Database)
└── accounts (Collection)
    ├── Document: account
    │   ├─ username : string   (UNIQUE)
    │   ├─ password : string   (UNIQUE)
    │   ├─ createdAt: Date
    │   └─ updatedAt: Date
    └── Indexes:
        ├─ { username: 1 } UNIQUE
        └─ { password: 1 } UNIQUE

terrible_login_prod (Database)
└── accounts (Collection)
    └── (同上,正式環境用)

上一篇
【Day 23】MongoDB 的基礎語法使用
系列文
【網頁是什麼,能吃嗎】── 零基礎也能學會網頁製作24
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言